home *** CD-ROM | disk | FTP | other *** search
/ Workbench Add-On / Workbench Add-On - Volume 1.iso / Dev / Oberon / examples.lha / Examples / Oberon0 / Rectangles0.Mod < prev    next >
Text File  |  1994-06-16  |  2KB  |  60 lines

  1. MODULE Rectangles0;  (*HM Mar-25-92*)
  2. IMPORT OS, Viewers0, Shapes0, GraphicFrames0;
  3.  
  4. TYPE
  5.   Rectangle* = POINTER TO RectDesc;
  6.   RectDesc* = RECORD (Shapes0.ShapeDesc)
  7.     x, y, w, h: INTEGER
  8.   END;
  9.  
  10. PROCEDURE (r: Rectangle) Draw* (f: Viewers0.Frame);
  11. BEGIN
  12.   WITH f: GraphicFrames0.Frame DO
  13.     IF r.selected THEN f.InvertBlock(r.x, r.y, r.w, r.h)
  14.     ELSE
  15.       f.InvertBlock(r.x, r.y, r.w, 1); f.InvertBlock(r.x, r.y + r.h - 1, r.w,
  16. 1);
  17.       f.InvertBlock(r.x, r.y + 1, 1, r.h - 2); f.InvertBlock(r.x + r.w - 1,
  18. r.y + 1, 1, r.h - 2)
  19.     END
  20.   END
  21. END Draw;
  22.  
  23. PROCEDURE (r: Rectangle) Copy* (): Shapes0.Shape;
  24.   VAR r1: Rectangle;
  25. BEGIN NEW(r1); r1.selected := r.selected; r1.x := r.x; r1.y := r.y; r1.w :=
  26. r.w; r1.h := r.h; RETURN r1
  27. END Copy;
  28.  
  29. PROCEDURE (r: Rectangle) Move* (dx, dy: INTEGER);
  30. BEGIN INC(r.x, dx); INC(r.y, dy)
  31. END Move;
  32.  
  33. PROCEDURE (r: Rectangle) SetBox* (x, y, w, h: INTEGER);
  34. BEGIN r.SetBox^ (x, y, w, h);
  35.   r.x := x; r.y := y; r.w := w; r.h := h
  36. END SetBox;
  37.  
  38. PROCEDURE (r: Rectangle) SetSelection* (x, y, w, h: INTEGER);
  39. BEGIN
  40.   r.selected := (r.x >= x) & (r.x+r.w <= x+w) & (r.y >= y) & (r.y+r.h <= y+h)
  41. END SetSelection;
  42.  
  43. PROCEDURE (r: Rectangle) GetBox* (VAR x, y, w, h: INTEGER);
  44. BEGIN x := r.x; y := r.y; w := r.w; h := r.h
  45. END GetBox;
  46.  
  47. PROCEDURE (r: Rectangle) Load* (VAR R: OS.Rider);
  48. BEGIN R.ReadInt(r.x); R.ReadInt(r.y); R.ReadInt(r.w); R.ReadInt(r.h)
  49. END Load;
  50.  
  51. PROCEDURE (r: Rectangle) Store* (VAR R: OS.Rider);
  52. BEGIN R.WriteInt(r.x); R.WriteInt(r.y); R.WriteInt(r.w); R.WriteInt(r.h)
  53. END Store;
  54.  
  55. PROCEDURE Set*;
  56. BEGIN Shapes0.curShape := "Rectangles0.RectDesc"
  57. END Set;
  58.  
  59. END Rectangles0.
  60.